package com.ray.base.network;

import com.ray.base.Constants;
import com.ray.base.bean.video.AllRec;
import com.ray.base.bean.video.CategoriesBean;
import com.ray.base.bean.video.FindBean;
import com.example.http.utils.BuildFactory;

import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;

/**
 * 2019-5-16
 **/
public interface HttpClient {

    class Builder {
        /**
         * 开眼视频
         *
         * @return
         */
        public static HttpClient getEyeService() {
            return BuildFactory.getInstance().create(HttpClient.class, Constants.VideoUrl.base_url);
        }


    }


    /************************************* 开眼api *****************************************/
    /**
     * 推荐
     *
     * @param page
     * @return
     */
    @GET(Constants.VideoUrl.allrec)
    Observable<AllRec> getAllRec(@Query("page") int page);

    /**
     * 发现
     *
     * @return
     */
    @GET(Constants.VideoUrl.discovery)
    Observable<FindBean> getFind();

    /**
     * 日报
     *
     * @return
     */
    @GET(Constants.VideoUrl.feed)
    Observable<AllRec> getDaily(@Query("date") String date,
                                @Query("num") int num);


    /**
     * 周排行
     *
     * @return
     */
    @GET(Constants.VideoUrl.past)
    Observable<AllRec> getPast(@Query("start") int start,
                               @Query("num") int num);


    /**
     * 周排行
     *
     * @return
     */
    @GET(Constants.VideoUrl.weekly)
    Observable<AllRec> getWeekly(@Query("start") int start,
                                 @Query("num") int num);

    /**
     * 月排行
     *
     * @return
     */
    @GET(Constants.VideoUrl.monthly)
    Observable<AllRec> getMonthly(@Query("start") int start,
                                  @Query("num") int num);

    /**
     * 总排行
     *
     * @return
     */
    @GET(Constants.VideoUrl.historical)
    Observable<AllRec> getHistorical(@Query("start") int start,
                                     @Query("num") int num);

    /**
     * 全部分类
     *
     * @return
     */
    @GET(Constants.VideoUrl.categories)
    Observable<CategoriesBean> getCategories();


    /**
     * 相关推荐
     *
     * @param id
     * @return
     */
    @GET(Constants.VideoUrl.related)
    Observable<AllRec> getRelated(@Query("id") String id);

    /**
     * 搜索
     *
     * @return
     */
    @GET(Constants.VideoUrl.search)
    Observable<AllRec> getSearch(@Query("start") int start,
                                 @Query("num") int num,
                                 @Query("query") String query);


}
